package cn.iocoder.yudao.module.im.dal.dataobject.message;

import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

/**
 * 消息 DO
 *
 * @author 芋道源码
 */
@TableName("im_message")
@KeySequence("im_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MessageDO extends BaseDO {

    /**
     * 消息ID
     */
    @TableId
    private Long id;
    
    /**
     * 消息唯一标识
     */
    private String msgId;
    
    /**
     * 发送者用户ID
     */
    private Long fromUserId;
    
    /**
     * 接收者用户ID（群聊时为群组ID）
     */
    private Long toUserId;
    
    /**
     * 聊天标识（单聊时为两个用户ID组合，群聊时为群组ID）
     */
    private String chatIdentify;
    
    /**
     * 消息类型
     * 
     * 枚举 {@link MessageTypeEnum}
     */
    private String type;
    
    /**
     * 消息内容
     */
    private String content;
    
    /**
     * 是否群聊（0-单聊，1-群聊，2-系统消息）
     */
    private Integer isGroup;
    
    /**
     * 是否已读（0-未读，1-已读）
     */
    private Integer isRead;
    
    /**
     * 是否最新消息（0-否，1-是）
     */
    private Integer isLast;
    
    /**
     * 文件ID
     */
    private Long fileId;
    
    /**
     * 文件分类
     */
    private Integer fileCate;
    
    /**
     * 文件大小
     */
    private String fileSize;
    
    /**
     * 文件名称
     */
    private String fileName;
    
    /**
     * @用户列表（逗号分隔）
     */
    private String at;
    
    /**
     * 回复消息ID
     */
    private Long pid;
    
    /**
     * 扩展信息（JSON格式）
     */
    private String extra;
    
    /**
     * 状态
     *
     * 枚举 {@link CommonStatusEnum}
     */
    private Integer status;
    
    /**
     * 发送时间
     */
    private Long sendTime;

}